package fr.afcepf.atod21.business;

import java.util.List;

import fr.afcepf.atod21.entity.Stagiaire;
import fr.afcepf.atod21.exception.Atod21Exception;

/**
 * Definition des methodes metier utilisees par
 * l'application contenant les regles de gestion.
 * @author Stagiaire
 */
public interface IBusinessStagiaire {
    /**
     * Methode permettant de rechercher un
     * {@link Stagiaire} par son nom.
     * @param nom le nom du {@link Stagiaire} recherche.
     * @return
     * <code>
     *     <ul>
     *          <li>une liste contenant les {@link Stagiaire}
     *           si il en existe contenant le nom passe en
     *           parametre.
     *          </li>
     *          <li>null si aucun ne correspond au critere
     *          de recherche</li>
     *     </ul>
     * </code>
     */
    List<Stagiaire> rechercher(String nom);
    /**
     * Methode permettant de rechercher un
     * {@link Stagiaire} par son {@link Organisme}.
     * @param idOrganisme l'identifiant de
     * l'{@link Organisme} du {@link Stagiaire}
     * recherche.
     * @return
     * <code>
     *     <ul>
     *          <li>une liste contenant les {@link Stagiaire}
     *           si il en existe contenant l'identifiant
     *           de l'{@link Organisme} passe en
     *           parametre.
     *          </li>
     *          <li>null si aucun ne correspond au critere
     *          de recherche</li>
     *     </ul>
     * </code>
     */
    List<Stagiaire> rechercher(int idOrganisme);
    /**
     * Methode permettant d'ajouter une entity
     * {@link Stagiaire}.
     * @param stagiaire le {@link Stagiaire} a ajouter.
     * @return
     * <code>
     *  <ul>
     *      <li>
     *          le {@link Stagiaire} avec sa cle primaire
     *          peuplee.
     *      </li>
     *      <li>
     *          le {@link Stagiaire} avec sa cle primaire
     *          non peuplee.
     *      </li>
     *  </ul>
     * </code>
     * @throws Atod21Exception exception lors de l'access a la BDD.
     */
    Stagiaire ajouter(Stagiaire stagiaire)
            throws Atod21Exception;
    /**
     * Methode permettant de modifier une entity
     * {@link Stagiaire} afin de lui supprimer
     * sa reference vers son {@link Organisme}.
     * @param stagiaire le {@link Stagiaire} a modifier.
     * @return
     * <code>
     *  <ul>
     *      <li>
     *          le {@link Stagiaire} avec son {@link Organisme}
     *          null si ca marche.
     *      </li>
     *      <li>
     *          le {@link Stagiaire} avec son {@link Organisme}
     *          toujours affecte si ca marche po.
     *      </li>
     *  </ul>
     * </code>
     * @throws Atod21Exception blabla
     */
    Stagiaire renvoi(Stagiaire stagiaire)
            throws Atod21Exception;
}
